Indicaciones generales:
Usted tiene el período de la clase para resolver el examen parcial.
La entrega del parcial, al igual que las tareas, es por medio de su cuenta de github, pegando el link en el portal de MiU.
Pueden hacer uso del material del curso e internet (stackoverflow, etc.). Sin embargo, si encontramos algún indicio de copia, se anulará el exámen para los estudiantes involucrados. Por lo tanto, aconsejamos no compartir las agregaciones que generen.
Existen 10 preguntas directas en este Rmarkdown, de las cuales usted deberá responder 5. Las 5 a responder estarán determinadas por un muestreo aleatorio basado en su número de carné.
Ingrese su número de carné en set.seed() y corra el chunk de R para determinar cuáles preguntas debe responder.
set.seed(20190019)
v<- 1:10
preguntas <-sort(sample(v, size = 6, replace = FALSE ))
paste0("Mis preguntas a resolver son: ",paste0(preguntas,collapse = ", "))
## [1] "Mis preguntas a resolver son: 1, 2, 3, 7, 9, 10"
Para las siguientes sentencias de base R, liste su contraparte de dplyr:
str()df[,c("a","b")]names(df)[4] <- "new_name" donde la posición 4 corresponde a la variable old_namedf[df$variable == "valor",]Al momento de filtrar en SQL, ¿cuál keyword cumple las mismas funciones que el keyword OR para filtrar uno o más elementos una misma columna?
¿Por qué en R utilizamos funciones de la familia apply (lapply,vapply) en lugar de utilizar ciclos?
¿Cuál es la diferencia entre utilizar == y = en R?
¿Cuál es la forma correcta de cargar un archivo de texto donde el delimitador es :?
¿Qué es un vector y en qué se diferencia en una lista en R?
¿Qué pasa si quiero agregar una nueva categoría a un factor que no se encuentra en los niveles existentes?
Si en un dataframe, a una variable de tipo factor le agrego un nuevo elemento que no se encuentra en los niveles existentes, ¿cuál sería el resultado esperado y por qué?
NAEn SQL, ¿para qué utilizamos el keyword HAVING?
Si quiero obtener como resultado las filas de la tabla A que no se encuentran en la tabla B, ¿cómo debería de completar la siguiente sentencia de SQL?
Extra: ¿Cuántos posibles exámenes de 5 preguntas se pueden realizar utilizando como banco las diez acá presentadas? (responder con código de R.)
Las funciones del paquete dplyr como alternativa para las de R base son:
glimpse()select(df, A, B)rename(df, old_name = new_name)filter(df, variable = "valor")Al momento de filtrar en mysql uno o más elementos de una columna es la keyword in
Con la familia apply no es necesario usar ciclos porque las funciones dentro de esta familia trabajan por default sobre cada elemento de la estructura.
Me da un NA en la categoría que no existe, pero puedo utiliar la función levels() para agregarla
La keyword HAVING se utiliza para incluir condiciones con funciones de mysql como MAX MIN SUM, ya que WHERE no las puede usar.
El query para obtener las filas de una tabla que no estan en otra tabla es:
EXTRA
## Warning: package 'gtools' was built under R version 4.1.1
Se puede obtener 252 examenes diferentes.
A. De los clientes que están en más de un país,¿cuál cree que es el más rentable y por qué?
B. Estrategia de negocio ha decidido que ya no operará en aquellos territorios cuyas pérdidas sean “considerables”. Bajo su criterio, ¿cuáles son estos territorios y por qué ya no debemos operar ahí?
###resuelva acá
parcial_anonimo$Year <- year(parcial_anonimo$DATE)
Clientes_rentables <- parcial_anonimo %>%
group_by(Cliente, Year) %>%
summarise(Paises = n_distinct(Pais),
Unidades = sum(`Unidades plaza`),
Utilidad = sum(Venta)) %>%
filter(Paises >= 2)
## `summarise()` has grouped output by 'Cliente'. You can override using the `.groups` argument.
Clientes_rentables <- arrange(Clientes_rentables,-Utilidad)
Clientes_rentables
## # A tibble: 18 x 5
## # Groups: Cliente [7]
## Cliente Year Paises Unidades Utilidad
## <chr> <dbl> <int> <dbl> <dbl>
## 1 a17a7558 2019 2 1106 9121.
## 2 a17a7558 2018 2 949 8678.
## 3 ff122c3f 2018 2 571 7246.
## 4 c53868a0 2018 2 816 6945.
## 5 ff122c3f 2019 2 658 6647.
## 6 c53868a0 2019 2 785 5975.
## 7 044118d4 2019 2 652 5410.
## 8 044118d4 2018 2 425 3529.
## 9 a17a7558 2020 2 219 2018.
## 10 ff122c3f 2020 2 134 1466.
## 11 f676043b 2019 2 110 1415.
## 12 c53868a0 2020 2 89 893.
## 13 f676043b 2020 2 58 778.
## 14 044118d4 2020 2 57 496.
## 15 f2aab44e 2019 2 30 293.
## 16 bf1e94e9 2018 2 0 0
## 17 bf1e94e9 2019 2 0 0
## 18 bf1e94e9 2020 2 0 0
Como podemos notar estos 7 cleintes son los que están en más de 1 país, pero solo 6 se encuentran activos, nuestros clientes más rentables serian el top 3 que es conformado por a17a7558 ff122c3f c53868a0 a lo largo de los 3 años y si analizamos las unidades que vendemos y su rendimiento veremos que tambien estos son los mayor retorno otorgan por unidad, aunque existe una gran cantidad de unidades que devuelven, lo que genera perdida para nosotros.
gg1 <- ggplot(Clientes_rentables,aes(x = Year, y = Utilidad, fill = Cliente))+
geom_bar(stat = 'identity')
gg1_plotly <- plotly::ggplotly(gg1)
gg1_plotly
###resuelva acá
Territorio <- parcial_anonimo %>%
group_by(Territorio, Cliente) %>%
summarise(Venta = sum(Venta)) %>%
filter(Venta <= -1)
## `summarise()` has grouped output by 'Territorio'. You can override using the `.groups` argument.
Podemos Notar que estos 15 territorios representan perdidas para la empresa, por lo que deberiamos dejarlos.
library(ggplot2)
gg2 <- ggplot(Territorio,aes(Venta, fill = Territorio))+
geom_bar()
gg2_plotly <- plotly::ggplotly(gg2)
gg2_plotly